//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//

//
#ifndef Green_PhysicalPageManagerGPGPU_H
#define Green_PhysicalPageManagerGPGPU_H

#include "PhysicalPageManager.h"

namespace Green {

  /*!
    \class PhysicalPageManagerGPGPU
    \brief Top level module for managing relationship between allocated physical and virtual pages.
  */
  class PhysicalPageManagerGPGPU : public PhysicalPageManager {
  public:
    PhysicalPageManagerGPGPU(EMemBankType bankType, MemoryTraitsManager* pMemTraitsManager); //!< Constructor
    COPY_CONSTRUCTOR_ABSENT(PhysicalPageManagerGPGPU);
    SUBCLASS_DESTRUCTOR_DEFAULT(PhysicalPageManagerGPGPU); //!< Destructor
    ASSIGNMENT_OPERATOR_ABSENT(PhysicalPageManagerGPGPU);
  protected:
    const std::vector<EPteType>& GetPteTypes() const override { return mPteTypes; } //! Return vector of EPteTypes
  private:
    std::vector<EPteType> mPteTypes; //!< Vector of EPteTypes to maintain page aligned addresses
  };

}

#endif  // Green_PhysicalPageManagerGPGPU_H
